package pers.zh.parking.amap;

import android.os.Handler;
import android.util.Log;
import android.view.View;

import com.amap.api.navi.AmapNaviPage;
import com.amap.api.navi.INaviInfoCallback;
import com.amap.api.navi.model.AMapNaviLocation;

import pers.zjc.commonlibs.util.ToastUtils;

public class NaviInfoCallback implements INaviInfoCallback {

    private OnArriveCallback mCallback;

    public OnArriveCallback getmCallback() {
        return mCallback;
    }

    public NaviInfoCallback(OnArriveCallback callback) {
        this.mCallback = callback;
    }

    public interface OnArriveCallback {
        void onArrive();
    }

    /**
     * 导航初始化失败时的回调函数
     **/
    @Override
    public void onInitNaviFailure() {

    }

    /**
     * 导航播报信息回调函数。
     * @param text 语音播报文字
     **/
    @Override
    public void onGetNavigationText(String s) {

    }

    /**
     * 当GPS位置有更新时的回调函数。
     *@param location 当前自车坐标位置 location - 当前位置的定位信息。
     **/
    @Override
    public void onLocationChange(AMapNaviLocation aMapNaviLocation) {

    }

    /**
     * 到达目的地后回调函数。
     * isEmulaterNavi - true代表是模拟导航到达目的地，false代表实时导航到达目的地
     **/
    @Override
    public void onArriveDestination(boolean b) {
        Log.d("onArriveDestination", "onArriveDestination: ");
        ToastUtils.showShort(b ? "模拟导航到达目的地,即将自动退出导航" : "到达目的地，即将自动退出导航");
        Handler handler = new Handler();
        handler.postDelayed(() -> {
             // 退出导航界面
            Log.d("onArriveDestination", "退出导航界面: ");
            AmapNaviPage.getInstance().exitRouteActivity();
        }, 3000);//3秒后执行Runnable中的run方法
        mCallback.onArrive();
    }

    /**
     * 启动导航后的回调函数
     * type - 导航类型参见NaviType
     **/
    @Override
    public void onStartNavi(int i) {

    }

    /**
     * 算路成功回调
     * @param routeIds 路线id数组
     */
    @Override
    public void onCalculateRouteSuccess(int[] ints) {

    }

    /**
     * 步行或者驾车路径规划失败后的回调函数
     * errorInfo - 参见PathPlanningErrCode
     **/
    @Override
    public void onCalculateRouteFailure(int i) {

    }

    /**
     * 停止语音回调，收到此回调后用户可以停止播放语音
     **/
    @Override
    public void onStopSpeaking() {

    }

    /**
     * 重新规划的回调
     * @param i type - 参见ReCalculateRouteType
     */
    @Override
    public void onReCalculateRoute(int i) {

    }

    /**
     * 退出组件或退出组件导航的回调函数
     * @param i pageType - 参见PageType
     */
    @Override
    public void onExitPage(int i) {

    }

    /**
     * 切换算路偏好回调
     * @param i strategy - 切换后偏好 参见PathPlanningStrategy
     */
    @Override
    public void onStrategyChanged(int i) {

    }

    /**
     * 获取导航地图自定义View，该View在导航整体界面的下面，注意要设置setLayoutParams并且设置高度
     * @return
     */
    @Override
    public View getCustomNaviBottomView() {
        return null;
    }

    /**
     * 获取导航地图自定义View,该View在导航界面的当前路名位置，使用该方法以后，将不会显示当前路名
     * @return
     */
    @Override
    public View getCustomNaviView() {
        return null;
    }

    /**
     * 驾车路径导航到达某个途经点的回调函数。
     * @param wayID - 到达途径点的编号，标号从0开始，依次累加。
     */
    @Override
    public void onArrivedWayPoint(int i) {

    }

    /**
     * 组件地图白天黑夜模式切换回调
     * @param i mapType - 枚举值参考AMap类,3 黑夜，4 白天
     */
    @Override
    public void onMapTypeChanged(int i) {

    }

    /**
     * 获取导航地图自定义View,该View在导航界面的垂直居中，水平靠左位置
     * @return
     */
    @Override
    public View getCustomMiddleView() {
        return null;
    }

    /**
     * 导航视角变化回调
     * @param i
     */
    @Override
    public void onNaviDirectionChanged(int i) {

    }

    /**
     * 昼夜模式设置变化回调
     * @param i
     */
    @Override
    public void onDayAndNightModeChanged(int i) {

    }

    /**
     * 播报模式变化回调
     * @param i mode - 1-简洁播报 2-详细播报 3-静音
     */
    @Override
    public void onBroadcastModeChanged(int i) {

    }

    /**
     * 比例尺智能缩放设置变化回调
     * 参数:
     * enable - 是否开启
     * @param b
     */
    @Override
    public void onScaleAutoChanged(boolean b) {

    }
}
